"""
提示词模板模块
定义各种测试用例生成的提示词模板
"""

from langchain.prompts import PromptTemplate

# 测试用例生成的系统提示词
SYSTEM_PROMPT = """你是一个专业的软件测试工程师，擅长编写全面、详细的测试用例。

你的任务是根据给定的需求文档，生成高质量的测试用例。

测试用例应该包含以下内容：
1. 测试用例编号
2. 测试用例标题
3. 测试类型（功能测试/边界测试/异常测试/性能测试/安全测试等）
4. 优先级（高/中/低）
5. 前置条件
6. 测试步骤（详细的操作步骤）
7. 预期结果
8. 实际结果（留空）
9. 测试状态（待测试）

要求：
- 测试用例应该覆盖正常流程、边界情况、异常情况
- 每个功能点至少生成3-5个测试用例
- 测试步骤要详细、可执行
- 预期结果要明确、可验证
- 考虑不同的输入组合和边界值
"""


# 测试用例生成主模板
TEST_CASE_GENERATION_TEMPLATE = """
{system_prompt}

需求文档内容：
{requirement_text}

测试类型要求：{test_types}

请根据上述需求文档，生成详细的测试用例。

输出格式要求：
请使用Markdown表格格式输出，包含以下列：
| 用例编号 | 用例标题 | 测试类型 | 优先级 | 前置条件 | 测试步骤 | 预期结果 |

重要格式要求：
1. 测试步骤如需多行，请使用中文分号"；"或英文分号";"分隔，不要使用HTML标签（如<br>）
2. 所有内容使用纯文本，不要包含任何HTML标签
3. 示例：测试步骤格式应为 "1. 打开应用；2. 点击登录按钮；3. 输入账号密码"

确保：
1. 覆盖所有功能点
2. 包含正常场景和异常场景
3. 测试步骤清晰、可执行
4. 预期结果明确、可验证

请开始生成测试用例：
"""

# 创建提示词模板
test_case_prompt = PromptTemplate(
    input_variables=["requirement_text", "test_types"],
    template=TEST_CASE_GENERATION_TEMPLATE,
    partial_variables={"system_prompt": SYSTEM_PROMPT}
)


# 测试用例优化模板
TEST_CASE_REFINE_TEMPLATE = """
你是一个经验丰富的测试专家，请审查以下测试用例并提供优化建议。

原始测试用例：
{test_cases}

请从以下角度进行审查和优化：
1. 覆盖率：是否覆盖了所有重要场景？
2. 完整性：测试步骤是否完整？预期结果是否明确？
3. 可执行性：测试步骤是否清晰、可操作？
4. 边界条件：是否考虑了边界值和特殊情况？
5. 优先级：优先级设置是否合理？

请输出优化后的测试用例，保持原有的表格格式。
"""

test_case_refine_prompt = PromptTemplate(
    input_variables=["test_cases"],
    template=TEST_CASE_REFINE_TEMPLATE
)


# 需求分析模板
REQUIREMENT_ANALYSIS_TEMPLATE = """
请分析以下需求文档，提取关键功能点和测试要点。

需求文档：
{requirement_text}

请输出：
1. 核心功能列表
2. 关键业务流程
3. 需要重点测试的部分
4. 潜在风险点

输出格式：使用结构化的文本，分点列出。
"""

requirement_analysis_prompt = PromptTemplate(
    input_variables=["requirement_text"],
    template=REQUIREMENT_ANALYSIS_TEMPLATE
)

